package basics.generics;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * 泛型
 *
 * @author chenzhihua
 * @Date 2024/7/16
 */
public class GenericsDemo {
    public static void main(String[] args) {
        // 创建一个泛型类对象
        ProductGetter<String> productGetter = new ProductGetter<>();
        String[] strProduct = {"华为手机", "小米手机", "OPPO", "VIVO"};
        for (String s : strProduct) {
            productGetter.addProduct(s);
        }

        System.out.println("恭喜抽到了：" + productGetter.getProduct());

        System.out.println("=========抽取奖金=========");
        ProductGetter<Integer> p = new ProductGetter<>();
        int[] intproduct = {100, 200, 500};
        for (int i : intproduct) {
            p.addProduct(i);
        }
        System.out.println("恭喜抽中了: " + p.getProduct() + "元");

    }
}

// 定义一个泛型类 抽奖器
class ProductGetter<T> {
    Random random = new Random();
    // 奖品
    private T product;
    // 奖品池
    List<T> list = new ArrayList<>();

    // 添加奖品
    public void addProduct(T product) {
        list.add(product);
    }

    // 抽奖,泛型成员方法
    public T getProduct() {
        return list.get(random.nextInt(list.size()));
    }

    /**
     * 泛型方法
     *
     * @param list 参数
     * @param <E>  泛型标识
     * @return E 返回类型
     */
    public <E> E getProduct(List<E> list) {
        return list.get(random.nextInt(list.size()));
    }

}
